bleh
[mqlkit.git] / indicators / Keltner Channels.mq4
blob55983850b07edc32bf138114f3f1d5532de182dc
1 //+------------------------------------------------------------------+\r
2 //|                                             Keltner Channels.mq4 |\r
3 //|                                                  Coded by Gilani |\r
4 //|                      Copyright © 2005, MetaQuotes Software Corp. |\r
5 //|                                        http://www.metaquotes.net |\r
6 //+------------------------------------------------------------------+\r
7 #property copyright "Copyright © 2005, MetaQuotes Software Corp."\r
8 #property link      "http://www.metaquotes.net"\r
9 //+------------------------------------------------------------------+\r
10 //| Custom indicator initialization function                         |\r
11 //+------------------------------------------------------------------+\r
12 #property indicator_chart_window\r
13 #property indicator_buffers 3\r
14 #property indicator_color1 Red\r
15 #property indicator_color2 Green\r
16 #property indicator_color3 Black\r
17 //----\r
18 double upper[], middle[], lower[];\r
19 extern int period=10;\r
20 //----\r
21 //+------------------------------------------------------------------+\r
22 //|                                                                  |\r
23 //+------------------------------------------------------------------+\r
24 int init()\r
25   {\r
26    SetIndexStyle(0,DRAW_LINE);\r
27    SetIndexShift(0,0);\r
28    SetIndexDrawBegin(0,0);\r
29    SetIndexBuffer(0,upper);\r
30    SetIndexStyle(1,DRAW_LINE);\r
31    SetIndexShift(1,0);\r
32    SetIndexDrawBegin(1,0);\r
33    SetIndexBuffer(1,middle);\r
34    SetIndexStyle(2,DRAW_LINE);\r
35    SetIndexShift(2,0);\r
36    SetIndexDrawBegin(2,0);\r
37    SetIndexBuffer(2,lower);\r
38 //---- indicators\r
39 //----\r
40    return(0);\r
41   }\r
42 //+------------------------------------------------------------------+\r
43 //| Custor indicator deinitialization function                       |\r
44 //+------------------------------------------------------------------+\r
45 int deinit()\r
46   {\r
47 //---- TODO: add your code here\r
48 //----\r
49    return(0);\r
50   }\r
51 //+------------------------------------------------------------------+\r
52 //| Custom indicator iteration function                              |\r
53 //+------------------------------------------------------------------+\r
54   int start() \r
55   {\r
56    int limit;\r
57    int counted_bars=IndicatorCounted();\r
58    if(counted_bars<0) return(-1);\r
59    if(counted_bars>0) counted_bars--;\r
60    limit=Bars-counted_bars;\r
61 //----\r
62    double avg;\r
63      for(int x=0; x<limit; x++) \r
64      {\r
65       middle[x]=iMA(NULL, 0, period, 0, MODE_SMA, PRICE_TYPICAL, x);\r
66       avg =findAvg(period, x);\r
67       upper[x]=middle[x] + avg;\r
68       lower[x]=middle[x] - avg;\r
69      }\r
70    return(0);\r
71   }\r
72 //+------------------------------------------------------------------+\r
73   double findAvg(int period, int shift) \r
74   {\r
75    double sum=0;\r
76      for(int x=shift;x<(shift+period);x++) \r
77      {\r
78       sum+=High[x]-Low[x];\r
79      }\r
80    sum=sum/period;\r
81    return(sum);\r
82   }\r
83 //+------------------------------------------------------------------+